﻿namespace GameBase.Sounds
{
    /// <summary>
    /// Defines an interface for basic menu and gameplay sound management.
    /// </summary>
    public interface IScreenSound
    {
        #region Sound Configuration

        /// <summary>
        /// Sets the volume of all associated sounds.
        /// </summary>
        /// <param name="volume">Volume (0.0 -> silence - 1.0 -> full volume).</param>
        void SetVolume(float volume);

        #endregion

        #region Menu

        /// <summary>
        /// Plays sound corresponding to "loop through menu items" action.
        /// </summary>
        void Cursor();

        /// <summary>
        /// Plays sound corresponding to "accept" action.
        /// </summary>
        void Accept();

        /// <summary>
        /// Plays sound corresponding to "cancel" action.
        /// </summary>
        void Cancel();

        /// <summary>
        /// Plays sound corresponding to "enter" action.
        /// </summary>
        void Enter();

        /// <summary>
        /// Plays sound corresponding to "scrolling along menu options" action.
        /// </summary>
        void Scroll();

        /// <summary>
        /// Plays sound corresponding to "error selecting option value" action.
        /// </summary>
        void Error();

        /// <summary>
        /// Plays sound corresponding to "default menu item values" action.
        /// </summary>
        void Default();

        /// <summary>
        /// Plays sound corresponding to "load game" action.
        /// </summary>
        void LoadGame();

        #endregion

        #region GamePlay

        /// <summary>
        /// Plays sound corresponding to "pause game" action.
        /// </summary>
        void Pause();

        /// <summary>
        /// Plays sound corresponding to "resume game" action.
        /// </summary>
        void Resume();

        #endregion
    }
}
